﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Permissions;
using System.Collections;
using System.Linq;

using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Data.SqlTypes;


namespace ENLibraryClass
{

    public class ENCitas
    {
        private int id;
        private DateTime fecha;
        private DateTime fechaFinal;
        private DateTime hora;
        private DateTime horaFinal;
        private int vendedor;
        private int cliente;
        private string descripcion;
        
        private CADLibraryClass.CitasCAD cadCitas;



        

    

        //CONSTRUCTOR DEFECTO
        public ENCitas()
        {

            id = 0;
            hora=DateTime.Parse("01/01/1900 0:00:00");
            fecha = DateTime.Parse("01/01/1900");
            //fecha = new DateTime(1900, 1, 1);
            //hora = new DateTime(1900, 1, 1, 12, 0, 0);
            vendedor = 0;
            cliente=0;
            descripcion="null";
            fechaFinal = DateTime.Parse("01/01/1900");
            horaFinal = DateTime.Parse("01/01/1900 0:00:00");

        }


        //CONSTRUCTOR PARAMETROS
        public ENCitas(int pid, DateTime pfecha,DateTime phora,int pvendedor,int pcliente,string pdescripcion,DateTime pfechaFinal, DateTime phoraFinal)
        {
            id = pid;
            fecha = pfecha;
            hora = phora;
            vendedor = pvendedor;
            cliente = pcliente;
            descripcion = pdescripcion;
            fechaFinal = pfechaFinal;
            horaFinal = phoraFinal;
            cadCitas = new CADLibraryClass.CitasCAD();
            
        }


        //PROPIEDADES
        public int Id
        {
            get { return id; }
            set { id = value; }
        }

        public DateTime Fecha
        {
            get { return fecha; }
            set { fecha = value; }
        }
        public DateTime FechaFinal
        {
            get { return fechaFinal; }
            set { fechaFinal = value; }
        }


        public DateTime Hora
        {
            get { return hora; }
            set { hora = value; }
        }
        public DateTime HoraFinal
        {
            get { return horaFinal; }
            set { horaFinal = value; }
        }

        public int Vendedor
        {
            get { return vendedor; }
            set { vendedor = value; }
        }

        public int Cliente
        {
            get { return cliente; }
            set { cliente = value; }
        }

        public string Descripcion
        {
            get { return descripcion; }
            set { descripcion = value; }
        }


        //METODOS CRUD
        public bool AltaCita()
        {
            try
            {
                bool nuevo = false;

                nuevo = cadCitas.AltaCita(id, fecha, hora, vendedor, cliente, descripcion);

                return nuevo;
            }

            catch (SqlException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public DataTable BuscarCitas()
        {
            try
            {
                return cadCitas.BuscarCitas();
            }

            catch (SqlException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }


        public DataTable BuscarCitasPor()
        {
            try
            {
                return cadCitas.BuscarCitas(id, fecha, hora, vendedor, cliente, descripcion);
            }

            catch (SqlException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public DataTable DiasMasOcupado()
        {
            try
            {
                return cadCitas.DiasMasOcupado();
            }

            catch (SqlException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public DataTable HoraMasOcupada()
        {
            try
            {
                return cadCitas.HoraMasOcupada();
            }

            catch (SqlException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public DataTable VendedorConMasCitas()
        {
            try
            {
                return cadCitas.VendedorConMasCitas();
            }

            catch (SqlException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public DataTable ClienteConMasCitas()
        {
            try
            {
                return cadCitas.ClienteConMasCitas();
            }

            catch (SqlException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }


        public bool ModificarCita()
        {
            try
            {
                bool modificado = false;
                modificado = cadCitas.ModificarCita(id, fecha, hora, vendedor, cliente, descripcion);
                return modificado;
            }

            catch (SqlException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }



        public DataTable BuscarCitasPorIntervalo()
        {
            try
            {
                return cadCitas.BuscarCitasIntervalo(id, fecha,fechaFinal, hora,horaFinal, vendedor, cliente, descripcion);
            }

            catch (SqlException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }


        public bool BorrarCita()
        {
            try
            {
                return cadCitas.BorrarCita(id);
            }

            catch (SqlException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

    }
}

